package domain

import (
	"github.com/hlhutu/gormplus"
	"ruoyi-go/internal/framework/db"
)

/**
 * 角色与菜单关联表 SysRoleMenu
 */
type SysRoleMenu struct {
	// 角色ID
	RoleId int64 `json:"roleId" gorm:"column:role_id" form:"roleId"`

	// 菜单ID
	MenuId int64 `json:"menuId" gorm:"column:menu_id" form:"menuId"`
}

// TableName 映射数据库表名
func (m SysRoleMenu) TableName() string {
	return "sys_role_menu"
}

// SysRoleMenu Model 定义
type sysRoleMenuModel struct {
	gormplus.Model[SysRoleMenu] // 使用泛型封装基础操作
}

// SysRoleMenuModelInst 单例变量初始化
var sysRoleMenuModelInst *sysRoleMenuModel

// SysRoleMenuModel 获取 SysRoleMenu 单例模型
func SysRoleMenuModel() *sysRoleMenuModel {
	if sysRoleMenuModelInst == nil {
		// 将 SysRoleMenu 注册到 GORM DB，并初始化
		sysRoleMenuModelInst = &sysRoleMenuModel{Model: gormplus.NewModel(SysRoleMenu{}, db.GormDB)}
	}
	return sysRoleMenuModelInst
}
